package org.aphasia4j.dao;

import java.util.List;

import org.aphasia4j.dao.core.BaseDao;
import org.aphasia4j.model.Category;
import org.aphasia4j.model.Word;

/**
 * Dao description for handling {@link Word} related database requests.
 * 
 * @author hillger.t
 */
public interface WordDao extends BaseDao<Word> {

  /**
   * Returns a list with the given amount of {@link Word}s. Please note that the
   * words will get shuffled. They will not have any specific order.
   * 
   * @param count The amount of words to return.
   * @return
   */
  public List<Word> getWords(int count);

  /**
   * Returns a list with the given amount of words which link to the passed
   * {@link Category}. Please note that the words will get shuffled. They will
   * not have any specific order.
   * 
   * @param count     The amount of words to return.
   * @param category  The category the words should be associated with.
   * @return
   */
  public List<Word> getWordsByCatory(int count, Category category);
}
